/** \file gu_renderer.h */
#pragma once

#include "gu_shader_adapter.h"
#include "gu_render_context.h"

namespace gu
{


/** Manager for the resources for dealing with the underlying renderer state.

*/
class Renderer
{
public:
    //virtual void materialSlot(MaterialSlot* material) = 0;
    //virtual MaterialSlot* materialSlot() = 0;

    //virtual bool render() = 0;

    virtual ShaderAdapter getShaderAdapter() = 0;
    virtual void applyState(state::DataSequence& dataSequence) = 0;
};

Renderer* newRenderer();

}
